#ifndef RS485_H_
#define RS485_H_

#include "main.h"
#include "usart.h"

#define DOWN_FRAME_HEADER			0xFA // 下行帧头
#define UP_FRAME_HEADER				0xFB // 上行帧头

// 读取参数指令
#define READ_CARRY_SYS_ENCODER		0x30 // 读取进位制多圈编码器值
#define READ_CUMULATIVE_ENCODER		0x31 // 读取累加制多圈编码器值
#define READ_ROTATIONAL_SPEED		0x32 // 读取电机实时转速
#define ACCUMULATED_PULSE_COUNT		0x33 // 读取输入累计脉冲数
#define READ_IO_STATUS				0x34 // 读取IO端口状态
#define POSITION_ANGLE_ERROR		0x39 // 读取电机位置误差
#define CLOSED_LOOP_DRIVE			0x3A // 读取闭环驱动板的使能状态
#define RELEASE_BLOCKED_ROTATION	0x3D // 解除堵转状态
#define READ_STALL_FLAG				0x3E // 读取堵转标志位
// 设置系统参数命令
#define CALIVRATE_MOTOR				0x80 // 校准电机
#define SET_WORK_MODE				0x82 // 设置工作模式
#define SET_WORK_CURRENT			0X83 // 设置工作电流，后两字节为电流毫安数
#define SET_SUBDIVISION				0X84 // 设置细分值，	后一字节为细分值，默认16细分值，0为256
#define SET_EFFECTIVE_LEVEL			0X85 // 设置En引脚有效电平
#define SET_ROTATION_DIRECTION		0x86 // 设置电机旋转方向
#define SET_PULSE_DELAY				0x87 // 设置脉冲延时
#define LOCKED_ROTOR_PROTECT		0x88 // 设置堵转保护功能
#define LR_OVER_TOLERNACE			0x89 // 设置堵转超差值
#define SET_BAUD_RATE				0X8A // 设置串口波特率
#define SET_SLAVE_ADDR				0x8B // 设置从机地址
#define SET_SLAVE_MODE				0x8C // 设置从机是否应答 和从机不主动发起数据模式
#define SET_MODBUS					0X8E // 设置MODBUS-RTU 通讯协议
#define LOCK_AXIS					0x8F // 设置总线模式启动时是否锁轴
#define SET_GROUP_ADDR				0X8D // 设置分组地址
// 位置控制模式
#define RELATIVE_PULSESNUM			0xFD // 按脉冲数相对运动
#define ABSOLUTE_PULSESNUM			0xFE // 按脉冲数绝对运动
#define RELATIVE_COORAINATE			0xF4 // 按坐标值相对运动
#define ABSOLUTE_COORAINATE			0xF5 // 按坐标值绝对运动


typedef struct {
	uint8_t	Uart_RX_Flag;
	uint8_t	rxByte;
} serial;

extern serial serial_t;

void positionMode3Run(uint8_t slaveAddr, uint16_t speed, uint8_t acc, int32_t absAxis);

#endif
